package com.lzz.bottomencapsulation.manager;

import android.app.Application;
import android.content.Context;

import com.github.gzuliyujiang.oaid.DeviceID;
import com.github.gzuliyujiang.oaid.DeviceIdentifier;
import com.github.gzuliyujiang.oaid.IGetter;
import com.lzz.bottomencapsulation.utils.SPUtils;

/**
 * @author lhx
 * @description:  oaid  等设备信息获取管理类
 * @date : 2024/1/23 14:11
 */
public class OaidDataManager {

    private static OaidDataManager instance;

    private OaidDataManager() {
    }

    public static OaidDataManager getInstance() {
        if (instance == null) {
            synchronized (OaidDataManager.class) {
                if (instance == null) {
                    instance = new OaidDataManager();
                }
            }
        }
        return instance;
    }

    public void register(Application application){
        DeviceIdentifier.register(application);
    }

    public void inputData(Context context){
        // 获取 IMEI，只支持 Android 10 之前的系统，需要 READ_PHONE_STATE 权限，可能为空
        DeviceIdentifier.getIMEI(context);
        // 获取安卓 ID，可能为空
        DeviceIdentifier.getAndroidID(context);
        // 获取数字版权管理 ID，可能为空。很鸡肋，在某些手机上还可能造成卡死或闪退，自 4.2.7 版本后已弃用
        DeviceIdentifier.getWidevineID();
        // 获取伪造 ID，根据硬件信息生成，不会为空，有大概率会重复
        DeviceIdentifier.getPseudoID();
        // 获取 GUID，随机生成，不会为空
        DeviceIdentifier.getGUID(context);
        // 是否支持 OAID/AAID
        DeviceID.supportedOAID(context);
        // 获取 OAID/AAID，同步调用
        DeviceIdentifier.getOAID(context);
        SPUtils.saveOAID(context, DeviceIdentifier.getOAID(context));
        // 获取 OAID/AAID，异步回调
        DeviceID.getOAID(context, new IGetter() {
            @Override
            public void onOAIDGetComplete(String result) {
                // 不同厂商的 OAID/AAID 格式是不一样的，可进行 MD5、SHA1 之类的哈希运算统一
                SPUtils.saveOAID(context,result);
            }

            @Override
            public void onOAIDGetError(Exception error) {
                // 获取 OAID/AAID 失败
            }
        });
    }

    public String getOAID() {
       return SPUtils.getOAID();
    }
}